// 导出了验证用户名的方法
const uPattern = /^([a-zA-Z0-9_]{4,8}|[\u4e00-\u9fa5]{2,6})$/
export var validateName = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请输入账号名!'))
  } else if (!uPattern.test(value)) {
    callback(new Error('4到8位（字母，数字，下划线）'))
  } else {
    callback()
  }
}

// 导出了验证密码的方法
const pwdPattern = /^[a-zA-Z0-9_]{6,12}$/
export var validatePass = (rule, value, callback) => {
  if (value === '') {
    callback(new Error('请输入密码!'))
  } else if (!pwdPattern.test(value)) {
    callback(new Error('6到12位（字母，数字，下划线）'))
  } else {
    callback()
  }
}

// 新密码和确定密码一致性
export var validateCheckPass = function(str, o) {
  return (rule, value, callback) => {
    if (value === '') {
      callback(new Error(`请输入${str}!`))
    } else if (!pwdPattern.test(value)) {
      callback(new Error('6到12位（字母，数字，下划线）'))
    } else {
      if (o.ruleForm.newPass !== value) {
        callback(new Error('两次密码不一致'))
      }
      callback()
    }
  }
}

// 导出确定新密码的功能保证一致
export var validateNewPass = function(str, o) {
  return (rule, value, callback) => {
    if (value === '') {
      callback(new Error(`请输入${str}!`))
    } else if (!pwdPattern.test(value)) {
      callback(new Error('6到12位（字母，数字，下划线）'))
    } else {
      // 如果别人先歇的确认新密码,那么失去焦点还会触发确定新密码的事件
      if (o.ruleForm.checkPass !== '') {
        o.$refs.ruleForm.validateField('checkPass')
      }
      callback()
    }
  }
}
